package com.dhl.utils;

import java.util.List;

/**
 * 公共持久层
 * @author hai
 *
 */
public interface BaseDao<T>{

	/**
	 * 根据主键删除
	 * @param id
	 * @return
	 */
	public boolean delete(String id);
	/**
	 * 根据对象删除
	 * @param entity
	 * @return
	 */
	public boolean delete(T entity);
	/**
	 * 根据主键找到对象
	 * @param id
	 * @return
	 */
	public T getById(String id);
	/**
	 * 根据条件找到对象
	 * @param hql
	 * @param values
	 * @return
	 */
	public T getBySearch(String hql,List<Object> values);
	/**
	 * 找到所有的对象
	 * @return
	 */
	public List<T> getAll();
	/**
	 * 统计总数
	 * @return
	 */
	public int getTotalCount();
	/**
	 * 根据条件统计总数
	 * @param hql
	 * @param values
	 * @return
	 */
	public int getSearchCount(String hql,List<Object> values);
	/**
	 * 保存对象
	 * @param entity
	 * @return
	 */
	public T save(T entity);
	/**
	 * 批量保存所有
	 * @param list
	 * @return
	 */
	public boolean saveAll(List<T> list);
	/**
	 * 更新对象
	 * @param entity
	 */
	public T update(T entity);
	/**
	 * 根据条件找到数据
	 * @param hql
	 * @param values
	 * @return
	 */
	public List<T> getSearch(String hql,List<Object> values);
	
	/**
	 * 执行sql删除或更新
	 * @param sql
	 * @param values
	 */
	public void delOrUpdateSQL(String sql,List<Object> values);
	
	/**
	 * 清除session中的一个对象
	 * @param entity
	 */
	public void rmSession(T entity);
	
	/**
	 * 清除session
	 * @param entity
	 */
	public void clearSession();
	
}
